package it.univaq.disim.mwt.business.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import it.univaq.disim.mwt.business.GiustificazioniService;
import it.univaq.disim.mwt.business.model.Alunno;
import it.univaq.disim.mwt.business.model.Assenza;
import it.univaq.disim.mwt.business.model.DebitoFormativo;
import it.univaq.disim.mwt.business.model.Giustificazione;
import it.univaq.disim.mwt.business.model.Insegnante;
import it.univaq.disim.mwt.business.model.Materia;

public class JDBCGiustificazioneService implements GiustificazioniService{

	@Override
	public Giustificazione findGiustificazioniById(Long id) {

		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		String sql="select * from giustificazioni where id = ? ";
		Giustificazione giustificazioni=null;
		
		try {
			
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.setLong(1, id);
			preparedStatement.executeQuery();
			resultSet = preparedStatement.getResultSet();
			resultSet.next();	
            
			Long ide = resultSet.getLong("id");
			Long idAssenza = resultSet.getLong("id_assenza");
			String descrizione = resultSet.getString("descrizione");
			Long idAlunno = resultSet.getLong("id_alunno");
			
			JDBCAssenzaService jdbcAssenzaService= new JDBCAssenzaService();
			Assenza assenza=jdbcAssenzaService.findAssenzeById(idAssenza);
			
			JDBCAlunnoService jdbcAlunnoService= new JDBCAlunnoService();
			Alunno alunno=jdbcAlunnoService.findAlunnoById(idAlunno);
			
			giustificazioni = new Giustificazione(ide, assenza, descrizione, alunno);
			
			resultSet.close();
			preparedStatement.close();
			connection.close();
			
			return giustificazioni;

		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		return null;
		
	}

	@Override
	public List<Giustificazione> findAllGiustificazioni() {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		List<Giustificazione> listGiustificazioni = new ArrayList<Giustificazione>();
		String sql = "select * from giustificazioni";
		Giustificazione giustificazioni = null;
		
		try {
			
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.executeQuery();
			resultSet = preparedStatement.getResultSet();
			
			while(resultSet.next()){
	            
				Long ide = resultSet.getLong("id");
				Long idAssenza = resultSet.getLong("id_assenza");
				String descrizione = resultSet.getString("descrizione");
				Long idAlunno = resultSet.getLong("id_alunno");
				
				JDBCAssenzaService jdbcAssenzaService= new JDBCAssenzaService();
				Assenza assenza=jdbcAssenzaService.findAssenzeById(idAssenza);
				
				JDBCAlunnoService jdbcAlunnoService= new JDBCAlunnoService();
				Alunno alunno=jdbcAlunnoService.findAlunnoById(idAlunno);
				
				giustificazioni = new Giustificazione(ide, assenza, descrizione, alunno);
	            listGiustificazioni.add(giustificazioni);
	            
			}
			
			resultSet.close();
			preparedStatement.close();
			connection.close();
			
			return listGiustificazioni;
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		
		return null;
	}
	
}